home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / prog_c / cuj0696.zip / DWYER.ZIP / RUN.TST / ROUNDL.C < prev    next >
C/C++ Source or Header  |  1996-02-29  |  1KB  |  44 lines

  1. /* ============ */
  2. /* Roundl.c    */
  3. /* ============ */
  4. #include <math.h>
  5. /* ==================================================== */
  6. /* Roundl - returns rounded integer of long double Tgt    */
  7. /* ==================================================== */
  8. long double
  9. Roundl(long double Tgt)
  10. {
  11.     long double  LrgstInt, FracPart;
  12.  
  13.     /* ------------------- */
  14.     /* Get Largest Integer */
  15.     /* ------------------- */
  16.     LrgstInt = floorl(Tgt);
  17.  
  18.     /* ----------------- */
  19.     /* Get Fraction Part */
  20.     /* ----------------- */
  21.     FracPart = Tgt - LrgstInt;
  22.  
  23.     if (FracPart < 0.5)
  24.     {
  25.     /* Do nothing (truncate) */
  26.     }
  27.     /* ----------------------- */
  28.     /* Round if FracPart > 1/2 */
  29.     /* ----------------------- */
  30.     else if (FracPart > 0.5)
  31.     {
  32.     ++LrgstInt;
  33.     }
  34.     else
  35.     {
  36.     /* --------------------------------- */
  37.     /* If LrgstInt is odd, round to even */
  38.     /* --------------------------------- */
  39.     LrgstInt += LrgstInt - 2.0 * floorl(0.5 * LrgstInt);
  40.     }
  41.  
  42.     return (LrgstInt);
  43. }
  44.